package com.ys.Map集合;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/**
 * 描述:
 *
 *
 * @author CodeYang
 * @version 2020/12/26 14:44
 */
public class Map集合的初步使用 {

    public static void main(String[] args) {

        Map<Integer, String> map = new HashMap<>();

        map.put(1,"1");
        map.put(2,"2");
        map.put(3,"3");
        map.put(4,"4");
        //map.put(key,value) 当再次put key 值重复时,会覆盖对应的value 保持key-value的唯一性
        System.out.println("删除的元素内容为:"+map.remove(2));

        System.out.println(map.put(8,"haha"));


        // 遍历map集合 只能间接的使用迭代器,因为迭代器,只能在List | Set 实现类中使用,
        // 所以我们要先把map 转为 set|list
        // 方式一:map.keySet(); 是返回 map 集合中所有的 key 对象值
        Set<Integer> keys = map.keySet();

        for (Integer indexKey : keys) {
            // map.get(key) 返回key的value 不存在返回null
            System.out.print(map.get(indexKey)+"|");
        }

        // 方式二:  map.entrySet(); 返回 是map 中所有的键值对关系
        /*
        * entrySet()方法，该方法取出的是关系（Set<Map.Entry<K, V>>），
        * 关系中包含key和value。其中Map.Entry<K,V>来表示这种数据类型，
        * 即将Map集合中的映射关系存入到Set集合中，这个关系的数据类型为Map.Entry接口。
        *
        * Map.Entry接口在java.util包中，它是Map接口中的一个内部接口，
        * getKey()和getValue()是接口Map.Entry<K,V>中的方法，返回对应的键和对应的值。
        * */
        System.out.println("-----------------");
        Set<Map.Entry<Integer, String>> entries = map.entrySet();
        for (Map.Entry<Integer, String> entry : entries) {
            System.out.println("key:"+entry.getKey()+":"+"value:"+entry.getValue());
        }

    }
}
